Scheduling Pane
Use this pane to define all aspects related to the scheduling of jobs, i.e. duration, links, dates, and whether the task should actually be performed or not.
All jobs are composed of the task, which represents the activity itself to be performed, and the start condition, which specifies when the task should be performed.
Perform Task: Set this option to true or false to activate or deactivate a job, that is, to indicate whether the task should actually be performed when the condition is met. This is similar to the Deactivate / Activate command in the Inputs Tab, but in this pane you can also define this as a function or an Excel input, or enter a probability distribution. A deactivated job will appear struck-through in the Inputs tab.
The Job and its Task
PetroVR distinguishes job from task, which is the actual activity performed by that job. The job itself is an abstraction, whose main component is the fact that the job's Start Conditions have been met, independently from whether once that condition was fulfilled the task was performed or not. This makes it possible to differentiate between four states of a job at any time during the simulation:
- not started: when the condition has not been met.
- finished: when the condition has been met and the task is over, whether it was actually performed or not (because the job was deactivated or aborted before completion.)
- active: when the condition is met and the task has started but is not over yet.
- complete: when the condition is met and the task is performed.
In other words, when a job is deactivated it will finish without actually completing its task. This impacts the scheduling of jobs that are linked, i.e., depend on each other: any job may be linked to the finishing of another job, which means that the only condition for job B to start is that the start condition for job A has been met. Then, job B will start whether A performs its task or not - e.g., it will not be cancelled if A is aborted or deactivated. Instead, if job B depends on A being completed, it will not perform its task until job A has done with its own.
Linking Jobs: the Difference between Finishes and Completes
The option to deactivate a job is also useful when analyzing different scenarios. In such occasions, to model the absence / presence of a particular job, it is usually more practical to set its Perform Task option to false than to delete the whole job.
Start Conditions
All jobs in PetroVR will be performed according to a rule: when a given set of conditions defined in this pane are met, the job should be performed. The condition is expressed as a statement, e.g. "the date is February 1st, 2010", or "Facility A working under its capacity", or "Maintenance job B has finished", etc. This statement is checked at every step during the simulation: the moment it proves true the condition is regarded as fulfilled and the new job can start.
How start conditions work: an example
These rules are formulated in the Scheduling pane by means of precise parameters, using drop-down lists:
Usually you define the starting date of the job. In some special cases it is possible to define not when a job starts but when it should finish; that is to say, to have the starting date calculated as the finish date minus the job's duration. This is specially useful for making two jobs finish on the same day, when their starting dates are unknown or variable; therefore, this option is only available for link-type conditions. It is not enabled for macro-jobs, because their duration can be affected by unforeseen events and so cannot be estimated beforehand - its finishing date cannot be calculated before the actual simulation.
There are four possible kinds of conditions:
- Date condition: This is the simplest kind of condition. Use it when you know the exact date you want the job to start.
- Link condition: Use this option to concatenate jobs, either to have one performed after the other, or to make them start/finish together. Select "Job" in the first list, then choose the job by name in the second one and finally specify the end to be taken as reference.
- Measure condition: Use this option to make the job depend on a particular threshold being reached during the simulation, e.g., the total production of the project falling below a certain limit, or the wells drilled in a reservoir going above a given number. Select "Facility", "Reservoir", "Well Group" or "Total project" in the first list, depending on the kind of variable you wish to use as a parameter; then choose the specific variable, and define the threshold. Among the options available for this, "Decreases" means that a variable value has decreased abruptly (i.e., that at a given step it is 10% lower than at the previous step) or has kept decreasing over the last three steps. "Falls below" means that the variable is less than the value entered only after it has surpassed it; e.g., when the Potential Rate of a facility falls below the facility's capacity - obviously the facility starts its production below that rate, but we are considering the moment it falls below it after having been operating for some time. In order to allow a margin for temporary shortages, it is only activated if the value has remained below the threshold for 30 consecutive days. "Rises above" means that a variable surpasses a given value after having yielded at least one value below it.
- Function: Use this option to model more complex conditions, e.g. using as parameters two or more variables at the same time.
The "finishes" parameter refers to the job being over, whether the task was performed or not; whereas "completes its task" refers to the task having been actually performed.
The completion of a task cannot be taken for granted until the job has started, because it is subject to uncertainty - the job may be abandoned, or may finish without completing its task, or never even start. Therefore, a condition of the type "Job A finishes when job B completes its task" cannot be evaluated until job B has started. It follows that if job A has a longer duration than job B, it will not be able to finish at the same time as B, because they will start together. When PetroVR detects one such case a warning message will be issued.
In macro-jobs such as Well Decline Manipulation or Well Production Rerouting, which usually contain several jobs for individual wells that may be performed at different times, the task is completed immediately when the start condition is met, even if the separate jobs are no done yet. In drilling and completion jobs, on the other hand, the task is not regarded as completed until the last well has been drilled/completed.
See further above, Uses of the Deactivate Job command.
An interesting use of the Function condition is the ability to link a job with more than one condition. A typical example is this:
and ("Pvr: Run Time: Current Date" >= "Job: Job 1: Finish Date", "Pvr: Run Time: Current Date" >= "Job: Job 2: Finish Date")
which will start the current job when the latter of Job 1 and Job 2 is finished - something you could not do with a simple Link type condition.
The Scheduling pane always shows an Expected Start Date, calculated prior to the simulation based on the inputs already entered. Its main purpose is to allow PetroVR to place the job in the Inputs Tab timeline. When the simulation runs and the job starts, the actual date is recorded in the Start Date runtime variable instead.
Duration and Time Lag
Enable Time Lag: Use this option to enter a lapse of time between the fulfillment of the condition and the actual start of the job. Note that if this option is enabled the job will not be considered as started until after the time lag has ended. Time Lag is available only for link-type conditions.
Duration: For some job types, the time consumed by the actual performance of the task can be entered. In the Inputs Tab, the defined duration of a job is represented by the length of the job bar. Some jobs do not have a Duration: Milestone, a Rig Mobilization / Demobilization, Reserves Booking, etc. For Facility Construction jobs duration receives the special name of Construction Time. Pipeline Laying jobs calculate their duration as a function of the length of the pipeline plus its Base Lay Time.
For macro-jobs, such as Well Drilling, the duration cannot be edited, since it is regarded as the time consumed in performing all their sub-jobs. This may be simply the sum of all individual sub-job durations, plus any lapses of inactivity in between, but may also be affected by the use of more than one rig unit. Therefore, the duration of macro-jobs is only known after the simulation is run.